package gui.pessoa;

import excecoes.estoque.DinheiroNegativoException;
import excecoes.pessoa.CpfCnpjExistenteException;
import excecoes.pessoa.LocalizacaoInvalidaException;
import java.awt.event.ActionEvent;
import java.sql.SQLException;
import excecoes.pessoa.CpfCnpjInvalidoException;
import excecoes.pessoa.NomeInvalidoException;
import banco.pessoa.BancoFuncionario;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import smartMarket.pessoa.Funcionario;

@SuppressWarnings("serial")
public class JFrameTableCadastroFuncionario extends JFrameTableCadastro {

    private boolean buscar;
    
    public JFrameTableCadastroFuncionario() {
        super("Funcionário");
        listaBanco();

    }
    
    
    private void listaBanco() {
        try {
            BancoFuncionario bf = new BancoFuncionario();
            listaBanco(bf.listar());

        } catch (NullPointerException e) {
        } catch (SQLException e) {
        } catch (NomeInvalidoException e) {
        } catch (CpfCnpjInvalidoException e) {
        } catch (DinheiroNegativoException ex) {
            Logger.getLogger(JFrameTableCadastroFuncionario.class.getName()).log(Level.SEVERE, null, ex);
        } catch (CpfCnpjExistenteException ex) {
            Logger.getLogger(JFrameTableCadastroFuncionario.class.getName()).log(Level.SEVERE, null, ex);
        } catch (LocalizacaoInvalidaException ex) {
            Logger.getLogger(JFrameTableCadastroFuncionario.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    
    @Override
    protected void jButtonNovoActionPerformed(ActionEvent evt) {
        if (buscar) {
            limpaBanco();
            listaBanco();
            buscar = false;
        }
        new JFrameNovoFuncionario().setVisible(true);

    }

    @Override
    protected void jButtonAlterarActionPerformed(ActionEvent evt) {
        if (buscar) {
            limpaBanco();
            listaBanco();
            buscar = false;
        }

        int linha = jTableBanco.getSelectedRow();
        String cpf = (String) model.getValueAt(linha, 1);

        new JFrameNovoFuncionario(cpf, linha).setVisible(true);
        
    }

    @Override
    protected void jButtonExcluirActionPerformed(ActionEvent evt) {
        int linha = jTableBanco.getSelectedRow();
        int codigo = Integer.parseInt("" + model.getValueAt(linha, 0));

        try {

            BancoFuncionario bf = new BancoFuncionario();
            Funcionario funcionario;

            funcionario = bf.buscar(codigo);

            bf.excluir(funcionario);
            JFrameTableCadastroFuncionario.model.removeRow(linha);
            JOptionPane.showMessageDialog(null, "Funcionário excluído com sucesso");

        } catch (SQLException SQLe) {
        } catch (NullPointerException npe) {
        } catch (NomeInvalidoException nie) {
        } catch (CpfCnpjInvalidoException CPFie) {
        } catch (DinheiroNegativoException ex) {
            Logger.getLogger(JFrameTableCadastroFuncionario.class.getName()).log(Level.SEVERE, null, ex);
        } catch (CpfCnpjExistenteException ex) {
            Logger.getLogger(JFrameTableCadastroFuncionario.class.getName()).log(Level.SEVERE, null, ex);
        } catch (LocalizacaoInvalidaException ex) {
            Logger.getLogger(JFrameTableCadastroFuncionario.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @Override
    protected void jButtonBuscarActionPerformed(ActionEvent evt) {
        this.limpaBanco();
        buscar = true;
    }
}
